/**
 * 文件名：AppMapper.java
 * 功能：应用程序数据访问层 MyBatis Mapper 接口
 * 作用：定义应用数据的增删改查方法，与 AppMapper.xml 中的 SQL 语句一一对应
 * 模块关系：
 *   - 被 AppController 注入使用：提供数据库查询功能
 *   - 与 AppEntity 关联：查询结果映射为 AppEntity 对象
 *   - 与 AppMapper.xml 配合：接口方法在 XML 中实现 SQL 逻辑
 *   - 由 MyBatis 框架自动生成实现类，无需手动编写
 * 作者：白永康
 * 学号：2501210209
 */
package com.example.demo.app.mapper;

import com.example.demo.app.entity.AppEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

/**
 * 应用程序 Mapper 接口
 * 使用 MyBatis 进行数据库访问，接口方法对应 AppMapper.xml 中的 SQL
 */
@Mapper
public interface AppMapper {
    
    /**
     * 查询所有应用，按 ID 升序排列
     * @return 应用实体列表
     */
    List<AppEntity> findAllOrderById();

    /**
     * 根据 ID 查询单个应用
     * @param id 应用 ID
     * @return 应用实体，不存在则返回 null
     */
    AppEntity findById(Long id);

    /**
     * 根据分类查询应用
     * @param category 应用分类
     * @return 符合条件的应用实体列表
     */
    List<AppEntity> findByCategory(String category);

    /**
     * 按评分降序排序返回所有应用
     * @return 按评分从高到低排列的应用实体列表
     */
    List<AppEntity> findAllOrderByRatingDesc();

    /**
     * 按下载量降序排序返回所有应用
     * @return 按下载量从高到低排列的应用实体列表
     */
    List<AppEntity> findAllOrderByDownloadsDesc();
}
